import nltk
from nltk.corpus import webtext  # 加载库
from collections import Counter
from nltk.book import *
from nltk.corpus import PlaintextCorpusReader
import re
import jieba
import jieba.posseg as psg  # 加载jieba库中的分词函数
'''
nltk.download("webtext")
print(nltk.corpus.webtext.fileids())
print(len(nltk.corpus.webtext.words("firefox.txt")))
enma=nltk.Text(nltk.corpus.webtext.words('firefox.txt'))
print(enma.concordance('opposite'))

for fileid in webtext.fileids():
      raw = webtext.raw(fileid)  # 内容
      num_chars = len(raw)  # 文本长度
      words = webtext.words(fileid)  # 文本词
      num_words = len(words)  # 词数量
      sents = webtext.sents(fileid)  # 文本句子
      num_sents = len(sents)  # 句子数
      vocab = set([w.lower() for w in webtext.words(fileid)])
      num_vocab = len(vocab)
      print('%d %d %d %s' % (num_chars, num_words, num_sents, fileid))



corpus_root = './data'  # 本地存放语料库文本的目录
wordlists = PlaintextCorpusReader(corpus_root, '.*')  # 获取语料库中的文本标识符列表
wordlists.fileids()  # 获取文件列表
print(wordlists.fileids())


with open('./data/琅琊榜.txt', 'r', encoding='utf-8') as f:  # 打开文本
    fiction = f.read()  # 读取文本
    len(set(fiction))  # 统计词种数（该行无打印，为计算逻辑）
    len(fiction) / len(set(fiction))  # 计算平均每个词的使用次数（该行无打印，为计算逻辑）
    print(len(set(fiction)))  # 打印词种数
    print(len(fiction) / len(set(fiction)))  # 打印平均每个词的使用次数


with open('./data/news.txt', 'r',encoding='utf-8') as f:  # 打开文本文件
    fiction = f.read()  # 读取文本
    len(set(fiction))  # 统计用词量
    len(fiction)/len(set(fiction))  # 平均每个词的使用次数
print(len(set(fiction)))  # 输出用词量
print(len(fiction)/len(set(fiction)))  # 输出平均每个字的使用次数
print(fiction.count('机器人'))  # “机器人”使用次数
print(fiction.count('领域'))  # “领域”使用次数
print(fiction.count('市场'))  # “市场”使用次数
print(fiction[125:135])
fdist=FreqDist(fiction)
print(fdist.most_common((300)))

# 3-15


W = Counter(fiction)
# 查询词频在0～5的词量
print(len([w for w in W.values() if w <= 5]))
# 查询词频在6～10的词量
print(len([w for w in W.values() if w > 5 and w <= 10]))
# 查询词频在11～15的词量
print(len([w for w in W.values() if w > 10 and w <= 15]))
# 查询词频在15以上的词量
print(len([w for w in W.values() if w > 15]))
'''
'''
# \u4e00-\u9fa5是用于判断是不是中文的一个条件
cleaned_data = ''.join(re.findall('[\u4e00-\u9fa5]', fiction))
wordlist = jieba.lcut(cleaned_data)  # 分词处理
text = nltk.Text(wordlist)  # 封装成“text”对象
print(text)
text.concordance(word='领域', width=25, lines=3)
text.similar(word='机器人')
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
words = ['机器人', '领域', '市场']
nltk.draw.dispersion.dispersion_plot(text, words, title='词汇离散图')
'''

sent = '去森林公园爬山。'
for w, t in psg.cut(sent):
      print(w, '/', t)